Modern research and technology have provided society with a wide variety of electronic devices. It is appreciated that some of these modern electronic devices are very powerful and useful to their users. For example, some of the electronic devices which fall into this category include: computers which occupy large office space down to computers which are held in one's hand, satellites which orbit around the earth relaying a multitude of communication signals, microwave ovens capable of quickly cooking food, global positioning system (GPS) devices capable of determining the specific locations of their users on the earth, cellular phones which enable their users to wirelessly communicate with other people, to name a few.
Additionally, it should be appreciated that some modern electronic devices also provide entertainment to their users. For instance, some of the electronic devices which fall into this category include: portable and fixed radio receivers which provide their users music along with a wide array of different audio programming, video game consoles which challenge their users with varying situations within different virtual realities, portable and fixed compact disc (CD) players which provide music to their users, portable and fixed televisions which provide a wide variety of visual and audio programming to their users, and video cassette recorders (VCRs) which enable their users to record television shows for later viewing and also enable them to watch (for example) prerecorded movies on a television set.
One of the enabling components of several of the above mentioned modern devices is a microcontroller or MCU. Specifically, the microcontroller is typically defined as a single chip (integrated circuit) that includes a processor, volatile memory such as random access memory (RAM), non-volatile memory such as read only memory (ROM), clocking source, and an input/output control unit. As such, the microcontroller is a computer on a chip. It should be appreciated that microcontrollers have been utilized in various applications for many years. Primarily, microcontrollers are used in control-oriented applications that are interrupt-driven, sensing and controlling external events. Microcontrollers are frequently found in a wide variety of devices and applications.
For example, microcontrollers may be found in appliances such as microwave ovens, refrigerators, televisions, VCRs, and stereos. Furthermore, microcontrollers may also be found within computer equipment such as laser printers, modems, and disk drives. Additionally, microcontrollers may be found within automobiles (e.g., engine control, diagnostics, climate control), environmental control devices (e.g., greenhouse, factory, home), aerospace, and thousands of other uses.
It should be understood that while a microcontroller may have sufficient memory to store data utilized by its processor, it may not be able to address all of the memory locations at once. For example, a microcontroller that has 8-bits of addressing can usually only address up to 256 memory locations. However, various techniques have been implemented in order to get around this limitation.
In one conventional technique, memory pages are directly swapped. For example, a register forms the high order of the address. As such, the active page is selected by writing to this register. Unfortunately, usually only one memory page is active at a time. Since the processor and the instruction stream have to issue an instruction to select the memory pages, all subsequent instructions operate within the current memory page. Thus, it is very difficult to pass information between memory pages.
Another conventional technique reserves a portion of each page (e.g., memory bank) as a shared area. For example, all memory banks may have an 8 byte hole which is reserved for shared data. Whenever a given memory bank is selected (energized), an 8 byte hole is selected (energized) in all of the memory banks. While this technique allows data to be copied back and forth between memory pages, it limits the available memory in each page.